// 定义一个函数，输入一个链表的头节点，反转该链表并输出反转后链表的头节点。

//  

// 示例:

// 输入: 1->2->3->4->5->NULL
// 输出: 5->4->3->2->1->NULL
//  

// 限制：

// 0 <= 节点个数 <= 5000

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
// 双指针 一个缓存当前节点 ,一个缓存上一个节点
var reverseList = function(head) {
    if(!head){
        return head; 
    }
    let pre = null;
    let cur = head;
    while (cur) {
        let tem = cur.next; // 暂存后继节点 cur.next
        cur.next = pre; // 修改 next 引用指向
        pre = cur; //pre 暂存 cur
        cur = tem //cur 访问下一节点
    }

    return pre;
}

var reverseList = function(head) {
    if(!head){
        return head; 
    }
   

    let curNode = head.next; 
    head.next = null; 
    let prenode = head; 
    while(curNode){
        let next = curNode.next; 
        curNode.next = prenode; 
        prenode = curNode; 
        curNode = next; 
    }
    return prenode

     
}